import logging
import os
import re

import pandas as pd
from moviepy import VideoFileClip


def get_video_duration(file_path):
    try:
        with VideoFileClip(file_path) as video:
            duration = video.duration  # 时长（秒）
            return round(duration)
    except Exception as e:
        print(f"错误：{e}")
        return None


def get_all_video_durations(folder_path):
    """获取目录下所有 mp4/mkv 文件的时长，返回 DataFrame"""
    # 存储结果的列表（每个元素是 (文件名, 时长)）
    video_info = []

    # 遍历目录下的所有文件
    for filename in os.listdir(folder_path):
        # 筛选 .mp4 和 .mkv 格式
        if not filename.lower().endswith(('.mp4', '.mkv')):
            logging.warning(f"文件{filename}非 .mp4 或 .mkv 视频文件")
            continue

        # 拼接完整文件路径
        file_path = os.path.join(folder_path, filename)
        # 跳过目录（只处理文件）
        if not os.path.isfile(file_path):
            continue
        # 获取时长
        duration = get_video_duration(file_path)
        if duration is not None:
            video_info.append({"文件名": filename, "时长（秒）": duration})

    # 转换为 DataFrame
    df = pd.DataFrame(video_info)
    return df


"""
# 示例
file_path = r"D:\100-Project\2025-2026-1学期安排\首义学院\19201017_《企业级应用开发课程设计（企业）》\学生提交\视频\软工华为2201-20221107114-樊宇洲.0916.mkv"  # 替换为你的视频路径
dir_path = r"D:\100-Project\2025-2026-1学期安排\首义学院\19201017_《企业级应用开发课程设计（企业）》\学生提交\视频"  # 替换为你的视频路径
df = get_all_video_durations(dir_path)
print(df)
"""

import comtypes.client

from spire.doc import *
from spire.doc.common import *

if __name__ == "__main__":
    # 示例
    file_path = r"D:\100-Project\2025-2026-1学期安排\首义学院\19201017_《企业级应用开发课程设计（企业）》\学生提交\报告\《企业级应用开发课程设计（企业）》报告-软工华为2201-20221119034-廖靖良.0914.doc"

    # 创建Document对象并加载Word文档
    doc = Document()
    doc.LoadFromFile(file_path)

    # 通过内置文档属性获取页数
    page_count = doc.BuiltinDocumentProperties.PageCount

    print(f"文档总页数为: {page_count}")

    # 释放资源
    doc.Close()
